alias nf dialog -md nf nf
alias nf.sw sockwrite -n f $1-
alias find_nick if $sock(f) { sockwrite -n f whois %.nfinder.nick }
alias nf.list set %y 0 |  :next |  inc %y |  while %y <= $gettok(%.nfinder.canais,0,32) { did -a nf 8 > $gettok(%.nfinder.canais,%y,32) | goto next }
dialog nf {
  title "Nick Finder"
  size -1 -1 294 186
  box "", 1, 7 -1 283 179
  edit "", 2, 58 11 142 22, autohs
  text "Server", 3, 14 15 39 15
  text "Nick", 4, 14 35 29 15
  edit "", 5, 58 31 142 22, autohs
  button "go", 6, 218 12 52 17
  button "clear", 7, 218 29 52 17
  list 8, 20 64 253 104, size, vsbar, hsbar
  button "&OK", 9, 0 0 0 0, ok, hide
}
on *:dialog:nf:sclick:*: if $did == 7 { did -r nf 8 } | if $did == 6 { if $did(2) && $did(5) { did -r nf 8 | set %.nfinder.nick $did(5) | set %.nfinder.server $did(2) | sockopen f %.nfinder.server 6667 } }
on *:dialog:nf:init:0: sockclose f | did -ra nf 5 %.nfinder.nick | did -ra nf 2 %.nfinder.server
on *:sockopen:f: {
  if ($sockerr) return
  else {
    did -a nf 8 Connecting...
    nf.sw Nick krazy_finder $+ $crlf $+ User krazyscript.org $ip PTnet :krazyscript.org
  }
}
on *:sockread:f: {
  sockread -f %data 
  if $left(%data,6) == PING $+ $chr(32) $+ : { nf.sw PONG $mid(%data,6,$len(%data)) }  
  if $gettok(%data,2,32) == 372 { .timer 1 5 find_nick }
  if $gettok(%data,2,32) == 401 { did -a nf 8 No such nick | sockclose $sockname } 
  if $gettok(%data,2,32) == 319 { set %.nfinder.canais $mid($gettok(%data,5-,32),2) | did -ra nf 8 Connected | nf.list | sockclose $sockname | halt } 
  if $gettok(%data,2,32) == 318 { did -ra nf 8 Connected (no channels) | sockclose $sockname | halt } 
}
on *:sockclose:f:if ($dialog(nf)) did -a nf 8 Disconnected | unset %.nfinder.*
